"""
封装介绍。python 通过 私有化 的方式实现封装
"""

# 1. 通过双下划线 __ 实现私有化


class Private:

    # 属性私有化
    __name = '私有化的属性'
    public_name = '没有私有化的属性'

    def get_name(self):
        return 'this is get_name'

    # 方法私有化
    def __get_public_name(self):
        return 'this is get_public_name'


print(dir(Private))
print(Private.public_name)
# 通过类访问 私有化属性 __name，将会报：AttributeError: type object 'Private' has no attribute '__name' 异常
# print(Private.__name)
private = Private()
print(private.public_name)
print(private.get_name())
# 通过实例访问 私有化属性 __name，也会报：AttributeError: type object 'Private' has no attribute '__name' 异常
# print(private.__name)
# 通过实例访问 私有化方法 __get_public_name()，将会报： AttributeError: 'Private' object has no attribute '__get_public_name'
# print(private.__get_public_name())

# 2. 通过方法获取私有化属性


class Pr:
    __name = '私有化属性'

    def name_info(self):
        return self.__name


# 通过属性方法获取到了私有化属性
pr = Pr()
print(pr.name_info())